package com.rj.ability.leqi.adapter.domain.aisino;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.rj.core.constant.RegexpPool;
import com.rj.util.AssertUtils;
import lombok.Data;

import java.util.Date;

/**
 * 发票交付请求
 *
 * @author YFX_RANLUBO
 * @date 2024/08/13 15:02
 **/
@Data
public class AisinoDeliveryReq {
    /**
     * 发票号码	20	是
     */
    private String invoiceNo;
    /**
     * 开票日期	14	是	YYYYMMDDHHMMSS
     */
    @JsonFormat(pattern = "yyyyMMddHHmmss", timezone = "GMT+8")
    private Date issueDate;
    /**
     * 随机数	10	是	开票返回报文中的随机数。
     */
    private String randomNum;
    /**
     * 交付方式途径	1	是
     * 1邮箱；
     * 2短信；
     * 5定制。
     */
    private String requestType;
    /**
     * 交付地址	50	是
     * 1邮箱：填Email地址；
     * 2短信：填手机号；
     */
    private String deliveryAddress;

    /**
     * 检查参数
     */
    public void check() {
        AssertUtils.notNull("开票日期", issueDate);
        AssertUtils.notEmpty("发票号码", invoiceNo, 20);
        AssertUtils.notEmpty("随机数", randomNum, 10);
        AssertUtils.in(false, "交付方式", requestType, "1", "2");
        boolean isEmail = "1".equals(requestType);
        if (isEmail) {
            AssertUtils.match(false, "交付邮箱", deliveryAddress, RegexpPool.EMAIL_WITH_CHINESE);
        } else {
            AssertUtils.match(false, "交付手机号", deliveryAddress, RegexpPool.MOBILE);
        }
    }
}
